#!/usr/bin/env python
#-*- coding:UTF-8
import time
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

def job1(f):
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), f)

def job2(arg1, arg2, f):
    print(arg1, arg2, f)

def job3(**args):
    print(args)

'''
APScheduler支持以下三种定时任务：
cron: crontab类型任务args1, args2
interval: 固定时间间隔任务
date: 基于日期时间的一次性任务
'''
scheduler = BlockingScheduler()
#循环任务示例
# scheduler.add_job(job1, 'interval', seconds=5, args=('循环',), id='test_job1')
#定时任务示例
# scheduler.add_job(job1, 'cron', second='*/5', args=('定时',), id='test_job2')
#一次性任务示例
scheduler.add_job(job1, next_run_time=(datetime.datetime.now() + datetime.timedelta(seconds=10)), args=('一次',), id='test_job3')
'''
传递参数的方式有元组(tuple)、列表(list)、字典(dict)
注意：不过需要注意采用元组传递参数时后边需要多加一个逗号
'''
#基于list
# scheduler.add_job(job2, 'interval', seconds=5, args=['a','b','list'], id='test_job4')
#基于tuple
# scheduler.add_job(job2, 'interval', seconds=5, args=('a','b','tuple',), id='test_job5')
#基于dict
# scheduler.add_job(job3, 'interval', seconds=5, kwargs={'f':'dict', 'a':1,'b':2}, id='test_job7')
print(scheduler.get_jobs())
# scheduler.start()

# #带有参数的示例
a = ["a","b"];
scheduler.add_job(job2, 'interval', seconds=5, args=(*a,'job4'), id='test_job4')
# scheduler.add_job(job2, 'interval', seconds=5, args=['a','b','job4'], id='test_job4')
# scheduler.add_job(job2, 'interval', seconds=5, args=('a','b',), id='test_job5')
# scheduler.add_job(job3, 'interval', seconds=5, kwargs={'a':1,'b':2}, id='test_job6')
# print(scheduler.get_jobs())
scheduler.start()